package no8;

import java.util.*;

public class ObjectTest {
	static final int N = 26;

	public static void main(String args[]) throws Exception {
		Scanner in = new Scanner(System.in);
		Person p = new Person();
		String name = "litinayu";
		p.setName(name);
		System.out.println(p.getName());
		Student s = new Student("小米", 18, "软件工程");
		System.out.println(s.toString());
		/*
		 * getClass返回值为当前的类，getSuperclass返回的是当前类的父类
		 */
		System.out.println(s.getClass().getSuperclass().toString());
		/*
		 * == 和 equals方法的区别 一 ==的使用 1.==可以使用在基本数据类型变量当中和引用数据类型变量当中
		 * 2.如果是比较引用类型的变量比较的是两个对象的地址值是否相同，即两个引用是否指向同一个对象实体 3.如果是比较两个基本数据类型，则是比较两个值是否相等 二
		 * equals的使用 1.是一个方法而非运算符 2.
		 */
		int i = 10, j = 10;
		System.out.println(i == j); // true
		double d = 10.0;
		char c = 10;
		System.out.println(i == d); // true
		System.out.println(c == i); // true
		// 类型题升 i转化成了double类型变量
		Person p1 = new Person("Tom", 21);
		Person p2 = new Person("Tom", 21);
		String str1 = new String("awsl");
		String str2 = new String("awsl");
		System.out.println(str1 == str2); // false
		System.out.println(p1 == p2); // false
		String str3 = "123", str4 = "123"; // 两个对象的地址相同，指向常量池
		System.out.println(str3 == str4);
		System.out.println("equals 方法的具体使用");
		String a = new String("123");
		String b = new String("123");
		System.out.println(a.equals(b)); //true
		//equals 对String, Date中的方法进行了重写
		//Object中的toString方法  如果未对其进行重写则打印的是其地址
//		 public String toString() {
//		        return getClass().getName() + "@" + Integer.toHexString(hashCode());
//		   }
		//像String，data都重写了Object中的方法
		
		in.close();
	}
}

